var async = require('async');
var AV = require('leanengine');
var Q = require('q');
//用户优惠券表
var ActivityShare = AV.Object.extend('ActivityShare');
var CartProduct = AV.Object.extend('CartProduct');
var cartCtrl =require('../../../models/cart.js');


var userM = require('../../../models/modUser');
var couponM = require('../../../models/coupon');
module.exports = {

    //分享领取奖品
    insertProToCartByShare:function(args){
        var uid = args.uid,
            openid = args.openid,
            nickname= args.nickname,
            imgUrl = args.imgUrl,
            pid='1046',
            psid='3222',
            number=1;
        var q = Q.defer();
        async.waterfall([
            //首先判断是否已赠送完成
            function(cb){
                var query = new AV.Query(ActivityShare);
                query.count().then(function(count){
                    if(count>=200){
                        cb({code:-1,msg:'本轮活动奖品已赠送完'})
                    }else{
                        cb(null,{code:0,msg:'可以赠送'})
                    }
                })
            },
            //判断ActivityShare表中是否存在
            function(res,cb){
                if(res.code === 0){
                    var query = new AV.Query(ActivityShare);
                    query.equalTo('openid',openid);
                    query.first().then(function(data){
                        if(data){
                            //存在，则跳出，给出已领取过
                            cb({code:-2,msg:'感谢您的分享，酸奶您已领取过'})
                        }else{
                            //没找到，则创建一条新数据
                            var share = new ActivityShare();
                            share.set({openid:openid,nickname:nickname,image:imgUrl});
                            share.save().then(function(){
                                cb(null, {code:0,msg:'创建成功'});
                            }).catch(function(){
                                cb({code:-3,msg:'未成功领取，重新分享即可'})
                            })
                        }
                    })
                }else{
                    cb({code:-1,msg:'本轮奖品您已领取过'})
                }
            },
            //向购物车插入数据
            function(res,cb){
                if(res.code === 0){
                    //可以插入数据
                    cartCtrl.insertProToCart(pid,psid,number,uid,3,1).then(function(data){
                        if(data.code === 0){
                            //创建成功
                            cb(null, {code:0,msg:'感谢您的分享，酸奶已加入您购物车'})
                        }else{

                            cb({code:-4,msg:'本轮活动奖品已赠送完'})
                        }
                    }).catch(function(err){
                        cb({code:-4,msg:'本轮活动奖品已赠送完'})
                    })
                }else{
                    cb({code:-3,msg:'未成功领取，重新分享即可'})
                }
            }
        ],function(err,results){
            if(err){
                q.reject(err)
            }else{
                q.resolve(results);
            }
        });
        return q.promise ;
    },

//未下过单或者新用户扫码发放优惠券
    giveCoupons:function(uid,couponId,cid,days){
        var q = Q.defer() ;
        async.waterfall([
            //判断是否为新用户
            function(cb){
                userM.isNewBuyer(uid).then(function(res){
                    if(res.code === 0){
                        cb(null, {code:0,msg:'新用户'});
                    }else{
                        cb({code:-1,msg:'您是我们的忠实用户，可以直接在微商城消费'});
                    }
                }).catch(function(err){
                    cb({code:-2,msg:'哎呀，网络卡了，请重新扫码试试'});
                });
            },
            function(newBuyer,cb){
                //判断是否领取过
                if(newBuyer.code === 0){
                    couponM.getCouponsOnce(uid,cid).then(function(data){
                        if(data.code === 0){
                            cb(null, {code:0,msg:'未领取过，可以领取'})
                        }else{
                            cb({code:-3,msg:'您已领取过优惠券，请把机会留给别人吧'})
                        }
                    }).catch(function(err){
                        console.log(err)
                        cb({code:-4,msg:'哎呀，网络卡了，请重新扫码试试'})
                    })
                }else{
                    cb({code:-1,msg:'您是我们的忠实用户，可以直接在微商城消费'});
                }
            },
            function(newBuyer,cb){
                if(newBuyer.code === 0){
                    //新用户，发放优惠券
                    couponM.giveCoupons(uid,couponId,days).then(function(data){
                        if(data.code === 0){
                            cb(null, {code:0,msg:'优惠券发放成功'});
                        }else{
                            cb({code:-2,msg:'哎呀，网络卡了，请重新扫码试试'});
                        }
                    }).catch(function(){
                        cb({code:-2,msg:'哎呀，网络卡了，请重新扫码试试'});
                    });
                }else{
                    cb({code:-1,msg:'您是我们的忠实用户，可以直接在微商城消费'});
                }
            }
        ],function(err,result){
            if(err){
                q.reject(err);
            }else{
                q.resolve(result);
            }
        });

        return q.promise ;
    }
};